char *s="abcde"

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:13:55
以下程序的运行结果:
希望能够详细的讲解下
(1)
char *s="abcde";
s+=2;
printf("%c",*s);

(2)
char *s="abcde";
s+=2;
printf("%s",s");

(3)
char *s="abcde";
s+=2;
printf("%d",*s);
(2)输出的是字符串cde,这题应该怎样分析呢

(1)
指针本来是指向字符串的首地址a的,+2后指向c,故输出:c

(2)
同理,由于是输出字符串,所以直到 '\0'为止,故输出:cde
(字符串都是以'\0'结束的,复制的时候虽然没有'\0',但是系统会自动给加上这个的,这是字符串结束标志)

(3)
同理,指向c,但是要输出整形,故读取c所占字节内容,c的ascII码为99,故即输出:99
(由于前面定义的指针p为字符型的,故即便是整形输出,也只读一个字节的内存)

希望能帮到你!~

1 s刚开始指向abcde这个字符串的首地址(也就是a),
s+=2后,s指向了c;输出后会打印c(因为%c是输出字符);

2 同上,输出后会打印cde(因为%s是输出字符串);

3 同上,输出后会打印99,好像是这个数,我也忘了,反正是一个整数(因为%d是输出整形);

s指向a字母对应地址,加2后指向c对应地址

那么
1输出的是字母c
2输出的是字符串cde
3输出的是字符c的ascii码